/*
 * @Author: 肖芬芳 10547202+xiao-fenfang@user.noreply.gitee.com
 * @Date: 2022-06-21 15:44:34
 * @LastEditors: 肖芬芳 1911683843@qq.com
 * @LastEditTime: 2022-11-30 16:11:04
 * @FilePath: \kindstar-youyi-webc:\Users\Administrator\Desktop\vue-api-server\model\user.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// 数据库操作
const mongoose = require('mongoose');
// 模型规则类
const { Schema } = mongoose;
// 对象规则验证
const Joi = require('joi');
// hash密码
const bcrypt = require('bcryptjs');

// 用户集合规则
const UserSchema = new Schema({
    // 用户名
    account: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 30
    },
    username: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 30
    },
    email: {
        type: String,
    },
    phone: {
        type: String,
        required: true,
    },
    // 密码
    password: {
        type: String,
        required: true
    },
    // 角色
    role: {
        type: String,
        require:true
    },
    // 创建时间
    createTime: {
        type: Number,
        require:true
    },
    // 状态
    status: {
        // 0 未激活 1 激活
        type: Number,
        require:true
    }
}, { versionKey: false });
// 用户集合类
const User = mongoose.model('User', UserSchema);

// 创建集合
async function create() {
    // 生成盐
    const salt = await bcrypt.genSalt(10);
    // 使用盐对密码进行加密
    const password = await bcrypt.hash('123456789', salt);

    // 初始化用户
    const user = await User.create({
        account: 'admin',
        username: '管理员',
        password: password,
        role: 'admin',
        email: 'admin@163.com',
        phone: '13212774009',
        createTime: new Date().getTime(),
        // 1表示启用
        status: 1
    });
}

// create();

// 没有找到默认用户，就创建，首次查询会报错
// User.findOne({ 'username': 'admin' }).then(async result => {
//     if (result == null) {
//         // 生成盐
//         const salt = await bcrypt.genSalt(10);
//         // 使用盐对密码进行加密
//         const password = await bcrypt.hash('123456', salt);

//         // 初始化用户
//         const user = await User.create({
//             avatar: '',
//             username: 'admin',
//             password: password,
//             role: 'admin',
//             avatar: null,
//             createTime: new Date,
//             status: 1
//         });
//     }
// });

module.exports = {
    User
}